<template>
  <div>
    <n-card :bordered="false" title="串口配置" class="mt-4 proCard">
      <n-grid :cols="3">
        <n-gi :span="1"
          ><div
            ><serial
              title="串口1"
              :uart-baudrate="
                serialConfig?.uartBaudrate0 === undefined ? 115200 : serialConfig?.uartBaudrate0
              "
              :uart-ip="serialConfig?.uartIp0 === undefined ? '' : serialConfig?.uartIp0"
              :uart-mode="serialConfig?.uartMode0 === undefined ? 1 : serialConfig?.uartMode0"
              :uart-port="serialConfig?.uartPort0 === undefined ? 1024 : serialConfig?.uartPort0"
              :uart-port-b="serialConfig?.uartPortB0 === undefined ? 0 : serialConfig?.uartPortB0"
              :uart-sbus="serialConfig?.uartSbus0 === undefined ? false : serialConfig?.uartSbus0"
              :uart-sbus-interval="
                serialConfig?.uartSbusInterval0 ? 7 : serialConfig?.uartSbusInterval0
              "
              :is-has-sbus="false"
              :submit-config="handleSubmitConfig"
          /></div>
        </n-gi>
        <n-gi :span="1"
          ><div
            ><serial
              title="串口2"
              :uart-baudrate="
                serialConfig?.uartBaudrate1 === undefined ? 115200 : serialConfig?.uartBaudrate1
              "
              :uart-ip="serialConfig?.uartIp1 === undefined ? '' : serialConfig?.uartIp1"
              :uart-mode="serialConfig?.uartMode1 === undefined ? 1 : serialConfig?.uartMode1"
              :uart-port="serialConfig?.uartPort1 === undefined ? 1024 : serialConfig?.uartPort1"
              :uart-port-b="serialConfig?.uartPortB1 === undefined ? 0 : serialConfig?.uartPortB1"
              :uart-sbus="serialConfig?.uartSbus1 === undefined ? false : serialConfig?.uartSbus1"
              :uart-sbus-interval="
                serialConfig?.uartSbusInterval1 ? 7 : serialConfig?.uartSbusInterval1
              "
              :is-has-sbus="false"
              :submit-config="handleSubmitConfig" /></div
        ></n-gi>
        <n-gi :span="1">
          <div
            ><serial
              title="串口3"
              :uart-baudrate="
                serialConfig?.uartBaudrate2 === undefined ? 115200 : serialConfig?.uartBaudrate2
              "
              :uart-ip="serialConfig?.uartIp2 === undefined ? '' : serialConfig?.uartIp2"
              :uart-mode="serialConfig?.uartMode2 === undefined ? 1 : serialConfig?.uartMode2"
              :uart-port="serialConfig?.uartPort2 === undefined ? 1024 : serialConfig?.uartPort2"
              :uart-port-b="serialConfig?.uartPortB2 === undefined ? 0 : serialConfig?.uartPortB2"
              :uart-sbus="serialConfig?.uartSbus2 === undefined ? false : serialConfig?.uartSbus2"
              :uart-sbus-interval="
                serialConfig?.uartSbusInterval2 === undefined ? 7 : serialConfig?.uartSbusInterval2
              "
              :is-has-sbus="true"
              :submit-config="handleSubmitConfig"
          /></div>
        </n-gi>
      </n-grid>
    </n-card>
  </div>
</template>

<script lang="ts" setup>
  import serial from './components/serial.vue';
  import type { SerialConfig } from '@/api/serialconfig/serialconfig';
  import { onMounted, ref } from 'vue';
  import { getSerialConfig } from '@/api/serialconfig/serialconfig';
  import { updateSerialConfig } from '@/api/serialconfig/serialconfig';
  import { useMessage } from 'naive-ui';

  const message = useMessage();

  const serialConfig = ref<SerialConfig>({} as SerialConfig);

  function handleSubmitConfig(data: any) {
    //console.log(data);
    let serialConfig = {};
    if (data.title === '串口1') {
      //   console.log('串口1');
      Object.assign(serialConfig, {
        uartBaudrate0: data.uartBaudrate,
        uartIp0: data.uartIp,
        uartMode0: data.uartMode,
        uartPort0: data.uartPort,
        uartPortB0: data.uartPortB,
        uartSbus0: data.uartSbus,
        uartSbusInterval0: data.uartSbusInterval,
      });
    } else if (data.title === '串口2') {
      //   console.log('串口2');
      Object.assign(serialConfig, {
        uartBaudrate1: data.uartBaudrate,
        uartIp1: data.uartIp,
        uartMode1: data.uartMode,
        uartPort1: data.uartPort,
        uartPortB1: data.uartPortB,
        uartSbus1: data.uartSbus,
        uartSbusInterval1: data.uartSbusInterval,
      });
    } else if (data.title === '串口3') {
      //   console.log('串口3');
      Object.assign(serialConfig, {
        uartBaudrate2: data.uartBaudrate,
        uartIp2: data.uartIp,
        uartMode2: data.uartMode,
        uartPort2: data.uartPort,
        uartPortB2: data.uartPortB,
        uartSbus2: data.uartSbus,
        uartSbusInterval2: data.uartSbusInterval,
      });
    }

    // console.log(serialConfig);
    updateSerialConfig({ ...serialConfig })
      .then((res) => {
        if (res === 'OK') {
          message.success(`更新${data.title}配置成功!`);
        } else {
          message.error(`更新${data.title}配置失败!`);
        }
      })
      .catch(() => {
        message.error(`更新${data.title}配置失败!`);
      });
  }

  onMounted(async () => {
    const serialconfig = await getSerialConfig();
    Object.assign(serialConfig.value, {
      uartBaudrate0: serialconfig.uartBaudrate0,
      uartIp0: serialconfig.uartIp0,
      uartMode0: serialconfig.uartMode0,
      uartPort0: serialconfig.uartPort0,
      uartPortB0: serialconfig.uartPortB0,
      uartSbus0: serialconfig.uartSbus0,
      uartSbusInterval0: serialconfig.uartSbusInterval0,

      uartBaudrate1: serialconfig.uartBaudrate1,
      uartIp1: serialconfig.uartIp1,
      uartMode1: serialconfig.uartMode1,
      uartPort1: serialconfig.uartPort1,
      uartPortB1: serialconfig.uartPortB1,
      uartSbus1: serialconfig.uartSbus1,
      uartSbusInterval1: serialconfig.uartSbusInterval1,

      uartBaudrate2: serialconfig.uartBaudrate2,
      uartIp2: serialconfig.uartIp2,
      uartMode2: serialconfig.uartMode2,
      uartPort2: serialconfig.uartPort2,
      uartPortB2: serialconfig.uartPortB2,
      uartSbus2: serialconfig.uartSbus2,
      uartSbusInterval2: serialconfig.uartSbusInterval2,
    });
  });
</script>
